import axios from 'axios';
import {
  Message,Modal
} from 'iview';
import store from '../store';
import {
  getToken
} from 'utils/auth';

// 创建axios实例
const service = axios.create({
  //baseURL: process.env.BASE_API, // api的base_url
  //baseURL: 'http://www.j4cflx.com/', // api的base_url
  baseURL: 'http://hy.yskxg.com:8080/', // api的base_url
  //crossDomain: true,
  withCredentials: true,
  timeout: 9000 // 请求超时时间
});
// request拦截器
service.interceptors.request.use(config => {
  // Do something before request is sent
  if (store.getters.token) {
    //config.headers['j4cf-token'] = "51455cc4-135d-4cdf-bab5-d7e9b15ce881";
    //config.headers['j4cf-token'] = getToken(); // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
  }
  return config;
}, error => {
  // Do something with request error
  console.log(error); // for debug
  Promise.reject(error);
})

// respone拦截器
service.interceptors.response.use(
  response => {
    /**
     * 下面的注释为通过response自定义code来标示请求状态，当code返回如下情况为权限有问题，登出并返回到登录页
     * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
     */
    const res = response.data;

    console.info(res);
    if (response.status === 401 || res.status === 401 || res.status === 40101 ) {
      // MessageBox.confirm('你已被登出，可以取消继续留在该页面，或者重新登录', '确定登出', {
      //   confirmButtonText: '重新登录',
      //   cancelButtonText: '取消',
      //   type: 'warning'
      // }).then(() => {
      //
      // })
      Modal.error({
                         title: "警告",
                         content: "登录超时或已被登出,请重新登录",
                         onOk: () => {
                           store.dispatch('FedLogOut').then(() => {
                             location.reload(); // 为了重新实例化vue-router对象 避免bug
                           });
                   }
                     });

       return Promise.reject('error');
    }
    if (res.status === 40301) {
      // Message({
      //   message: '当前用户无相关操作权限！',
      //   type: 'error',
      //   duration: 5 * 1000
      // });
      Message.error('当前用户无相关操作权限！');
       return Promise.reject('error');
    }
    if (response.status !== 200 && res.status !== 200) {
    //   Message({
    //     message: res.message,
    //     type: 'error',
    //     duration: 5 * 1000
    //   });
     } else {
       return response.data;
     }
  },
  error => {
    console.log('err' + error); // for debug
    // Message({
    //   message: error.message,
    //   type: 'error',
    //   duration: 5 * 1000
    // });
    return Promise.reject(error);
  }
);

export default service;
